package com.yuandian.customer.perception.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.api.customer_perception.po.SystemAnalysisParams;
import com.yuandian.api.customer_perception.po.SystemCompareTrendParams;
import com.yuandian.api.customer_perception.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 说明：系统分析mapper接口
 * @Author yanjun
 * @Date 2021/8/11 13:38
 */
@Mapper
public interface SystemAnalysisMapper {

    /**
     * 查询系统分析概况
     * @param params 系统分析请求参数
     * @return 系统分析概况vo对象
     */
	SystemAnalysisOverviewVo querySystemAnalysisOverview(@Param("params") SystemAnalysisParams params);

    /**
     * 查询系统告警占比
     * @param params 系统分析请求参数
     * @return 系统告警占比vo对象集合
     */
    List<SystemAlarmProportionVo> querySystemAlarmProportion(@Param("params") SystemAnalysisParams params);

    /**
     * 查询系统指标趋势
     * @param params 系统分析请求参数
     * @return 系统指标趋势vo对象集合
     */
    List<SystemIndicatorTrendVo> querySystemIndicatorTrend(@Param("params") SystemAnalysisParams params);

    /**
     * 查询系统对比趋势
     * @param params 系统对比趋势请求参数
     * @return 系统对比趋势vo对象集合
     */
    List<SystemCompareTrendVo> querySystemCompareTrend(@Param("params") SystemCompareTrendParams params);

    /**
     * 分页查询系统业务总览
     * @param params 系统分析请求参数
     * @return 系统操作员总览vo对象集合
     */
    List<SystemBusinessOverviewVo> querySystemBusinessOverview(
			@Param("params") SystemAnalysisParams params, Page<SystemBusinessOverviewVo> page);

    /**
     * 查询业务指标TOPN
     * @param params 系统分析请求参数
     * @return 业务指标TOPN vo对象集合
     */
    List<BusinessIndicatorTopNVo> queryBusinessIndicatorTopN(@Param("params") SystemAnalysisParams params);

    /**
     * 分页查询系统操作员总览
     * @param params 系统分析请求参数
     * @return 系统操作员总览vo对象集合
     */
    List<SystemOperatorOverviewVo> querySystemOperatorOverview(
            @Param("params") SystemAnalysisParams params, Page<SystemOperatorOverviewVo> page);

    /**
     * 查询操作员业务办理类型数
     * @param params 系统分析请求参数
     * @return 系统操作员总览vo对象集合
     */
    List<SystemOperatorOverviewVo> queryOperatorBusinessType(@Param("params") SystemAnalysisParams params);

    /**
     * 查询操作员业务办理量TOPN
     * @param params 系统分析请求参数
     * @return 操作员业务办理量TOPN vo对象集合
     */
    List<OperatorCompleteTopNVo> queryOperatorCompleteTopN(@Param("params") SystemAnalysisParams params);

    /**
     * 查询营业员业务办理失败分布
     * @param params 系统分析请求参数
     * @return 操作员业务办理失败vo对象集合
     */
    List<OperatorFailBusinessVo> queryOperatorFailBusiness(@Param("params") SystemAnalysisParams params);

    /**
     * 查询营业员办理业务告警类型分布
     * @param params 系统分析请求参数
     * @return 操作员办理业务告警vo对象集合
     */
    List<OperatorBusinessAlarmVo> queryOperatorBusinessAlarm(@Param("params") SystemAnalysisParams params);
}
